package com.briup.oagg.model.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.briup.oagg.model.bean.basic.ModelInfo;
import com.baomidou.mybatisplus.extension.service.IService;
import com.briup.oagg.model.bean.ext.ModelStatisticExt;
import com.briup.oagg.model.web.vm.ModelInfoAddOrUpdateVM;

import java.util.List;

/**
 * 模型信息业务逻辑接口
 *
 * @author briup
 */
public interface IModelInfoService extends IService<ModelInfo> {
    /**
     * 新增或修改模型信息
     * @param vm 模型信息
     */
    void addOrUpdate(ModelInfoAddOrUpdateVM vm);

    /**
     * 根据模型编号删除模型信息
     * @param id 模型编号
     */
    void deleteById(String id);

    /**
     * 分页多条件查询模型信息
     * @param pageNum   当前页码
     * @param pageSize  每页大小
     * @param modelName  模型名称
     * @param modelType 模型类型
     */
    Page<ModelInfo> findByPage(Integer pageNum, Integer pageSize, String modelName, String modelType);

    /**
     * 按月统计各分类模型数量
     * @param year
     * @return
     */
    List<ModelStatisticExt> countByMonth(Integer year);

    /**
     * 按月统计各类模型训练数量
     * @param year
     * @return
     */
    List<ModelStatisticExt> countModelTrainByMonth(Integer year);

    /**
     * 根据类型查询所有的模型信息
     * @param modelType
     * @return
     */
    List<ModelInfo> findByType(String modelType);

    /**
     * 根据模型ID查询对应的模型信息
     * @param modelId
     * @return
     */
    ModelInfo findById(String modelId);
    /**
     * 根据数据集ID查询对应的模型信息
     * @param datasetId 数据集编号
     * @return
     */
    List<ModelInfo> findByDatasetId(String datasetId);
}
